/**
 * Commitlint 配置文件，用于规范 Git 提交信息。
 * 导出一个默认配置对象，包含忽略规则、扩展配置和具体规则。
 */
export default {
  // 定义忽略规则，当提交信息包含 "init" 时，不进行检查
  ignores: [commit => commit.includes("init")],
  // 继承 @commitlint/config-conventional 预设的配置规则
  extends: ["@commitlint/config-conventional"],
  // 定义具体的提交信息规则
  rules: {
    // 提交信息的 body 部分必须以空行开头
    "body-leading-blank": [2, "always"],
    // 提交信息的 footer 部分必须以空行开头
    "footer-leading-blank": [1, "always"],
    // 提交信息的 header 部分最大长度为 108 个字符
    "header-max-length": [2, "always", 108],
    // 提交信息的 subject 部分不能为空
    "subject-empty": [2, "never"],
    // 提交信息的 type 部分不能为空
    "type-empty": [2, "never"],
    // 提交信息的 type 部分必须是指定枚举值中的一个
    "type-enum": [
      2,
      "always",
      [
        "feat", // 新增功能
        "fix", // 修复 bug
        "perf", // 性能优化
        "style", // 代码风格调整
        "docs", // 文档更新
        "test", // 测试用例相关
        "refactor", // 代码重构
        "build", // 构建系统或依赖更新
        "ci", // CI 配置相关
        "chore", // 杂项任务，如更新配置文件
        "revert", // 回滚操作
        "wip", // 工作进行中
        "workflow", // 工作流相关
        "types", // 类型定义相关
        "release" // 版本发布
      ]
    ]
  }
};
